import java.io.Serializable;
import java.util.ArrayList;
import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;

import pkgCarrito.CarritoEJBLocal;
import pkgCarrito.producto;

@SessionScoped
@ManagedBean
public class TiendaMB implements Serializable {

	private static final long serialVersionUID = 1L;

	@EJB(name = "CarritoEJBLocal", mappedName = "CarritoEJBLocal")
	CarritoEJBLocal bean;

	private int id;
	private String nombre;
	private String descripcion;
	private String categoria;
	private int cantidad = 0;
	private int precio;
	private int totalcomprado = 0;
	private ArrayList<producto> pro;
	private ArrayList<ProductoCarrito> procarrito = new ArrayList<ProductoCarrito>();

	@PostConstruct
	public void init() {
		pro = bean.ListarProductos();

	}

	public ArrayList<producto> getProducto() {
		return pro;

	}

	public void setProducto(ArrayList<producto> p) {
		this.pro = p;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public String getDescripcion() {
		return descripcion;
	}

	public void setDescripcion(String descripcion) {
		this.descripcion = descripcion;
	}

	public String getCategoria() {
		return categoria;
	}

	public void setCategoria(String categoria) {
		this.categoria = categoria;
	}

	public int getCantidad() {
		return cantidad;
	}

	public void setCantidad(int cantidad) {
		this.cantidad = cantidad;
	}

	public int getPrecio() {
		return precio;
	}

	public void setPrecio(int precio) {
		this.precio = precio;
	}

	public ArrayList<ProductoCarrito> getProcarrito() {
		return procarrito;
	}

	public void setProcarrito(ArrayList<ProductoCarrito> procarrito) {
		this.procarrito = procarrito;
	}

	public String agregarCarritoDeCompra(producto p) {

		// si esta vacio el ArrayList de procarrito
		if (procarrito.isEmpty()) {
			procarrito.add(new ProductoCarrito(p.getId(), p.getNombre(), 0, p
					.getPrecio()));
		}

		boolean existe = false;
		for (ProductoCarrito prod : procarrito) {
			if (p.getId() == prod.getId()) {
				int cant = prod.getCantidad();
				cant = cant + 1;
				prod.setCantidad(cant);
				existe = true;
				break;
			}

		}
		if (existe == false) {

			procarrito.add(new ProductoCarrito(p.getId(), p.getNombre(), 1, p
					.getPrecio()));

		}

		totalcomprado = totalcomprado + 1;
		return "Tienda";
	}

	public String irADetalle() {

		return "DetalleCarrito";
	}

	public int getTotalcomprado() {
		return totalcomprado;
	}

	public void setTotalcomprado(int totalcomprado) {
		this.totalcomprado = totalcomprado;
	}

	public String comprar() {

		for (producto p : pro) {

			for (ProductoCarrito proc : procarrito) {

				if (p.getId() == proc.getId()) {
					bean.modificarProduto(p.getId(), p.getNombre(),
							p.getDescripcion(), p.getCategoria(),
							p.getCantidad() - proc.getCantidad(), p.getPrecio());
				}
			}

		}
		procarrito = new ArrayList<ProductoCarrito>();
		totalcomprado = 0;
		init();
		return "Tienda";
	}

	public String addcant(int id) {
		int cant = 0,cant2 = 0;
				
		for (producto prod : pro)

			if (prod.getId() == id) {
				cant2 = prod.getCantidad();
			}
		
		for (ProductoCarrito p : procarrito) {

			if (p.getId() == id) {
				cant = p.getCantidad() + 1;
				
				if (cant<=cant2){
				p.setCantidad(cant);
				}
			}
		}

		

		return "DetalleCarrito";

	}

	public String restcant(int id) {

		for (ProductoCarrito p : procarrito) {

			if (p.getId() == id) {
				int cant = p.getCantidad() - 1;
				if (cant >= 1) {
					p.setCantidad(cant);
				}
			}

		}
		return "DetalleCarrito";
	}

	public String delprod(ProductoCarrito p) {
		totalcomprado = totalcomprado - p.getCantidad();
		procarrito.remove(p);
		return "Tienda";
	}
	
	
	public int obtenerTotal(){
		
		int total = 0;
		for ( ProductoCarrito p : procarrito){
			
			total = total + (p.getCantidad() * p.getPrecio());
			
		}
		
		return total;
	}
	
	
	
}
